package com.tmxk.api.days01.days01_wmh.list;

import java.util.ArrayList;

/**
 * @Description: ArrayList动态数组集合
 * @Author: wmh
 * @CreateTime: 2022-11-28  10:41
 * @Version: 1.0
 */
public class ArrayListDemo_Generic {
    public static void main(String[] args) {
        // 对象数组存储
        Dog[] dogs = new Dog[5];
        dogs[0] = new Dog("小花",2);
        dogs[1] = new Dog("花花",3);
        dogs[2] = new Dog("小黑",1);
        dogs[3] = new Dog("小白",5);
        dogs[4] = new Dog("汪汪",6);

        // 需求1:  使用ArrayList集合对象 添加 5 个 Dog对象
        // dog1  小花   2
        // dog2  花花   3
        // dog3  小黑   1
        // dog4  小白   5
        // dog5  汪汪   6
        ArrayList<Dog> arrayList = new ArrayList<>();
        Dog dog1 = new Dog("小花",2);
        arrayList.add(dog1);
        arrayList.add(dog1);
        arrayList.add(new Dog("花花",3));
        arrayList.add(new Dog("小黑",1));
        arrayList.add(new Dog("小白",5));
        arrayList.add(new Dog("汪汪",6));
        arrayList.add(dog1);


        // 需求2:  获取第三个下标元素的狗狗对象
        Dog dog =  arrayList.get(2);
        System.out.println("获取第三个下标元素的狗狗对象:" + dog);
        //需求3: 查找是否存在 汪汪 这个集合元素
        System.out.println("查找汪汪 是否包含在该集合元素中:" + arrayList.contains("汪汪")) ;
        // 定义一个标识符,用来标识定义的元素是否存在,默认false 不存在
        boolean flag = false;
        for (Dog d : arrayList ) {
            // String str = "汪汪".equals(d.getName()) == true ? "包含在该集合元素中" : "不包含在该集合元素中";
            if ("汪汪".equals(d.getName())) {
                flag = true;
                break;
            }
        }
        System.out.println(flag == true ? "包含在该集合元素中" : "不包含在该集合元素中" );
        //需求4: 删除 花花
        // 定义一个标识符,用来标识是否成功删除该集合元素,默认定义false,未删除成功
        boolean isRemove = false;
        for (int i = 0; i < arrayList.size() ; i++) {
            Dog d =  arrayList.get(i);
            if("花花".equals(d.getName())){
                isRemove =  arrayList.remove(d);
            }
        }
        System.out.println(isRemove == true ? "删除花花成功!" : "删除花花失败");

        //需求5: 循环遍历该集合元素
        System.out.println("\n循环遍历该集合元素");
        for (int i = 0; i < arrayList.size() ; i++) {
            System.out.println(arrayList.get(i).getName() + "\t" + arrayList.get(i).getAge());
        }
        // 操作集合元素时出现 java.lang.ClassCastException 该异常情况时, 使用 泛型 即可解决;
    }
}






